import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { FormsModule } from '@angular/forms';
import { HttpClientModule } from '@angular/common/http';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { NZ_I18N } from 'ng-zorro-antd/i18n';
import { zh_CN } from 'ng-zorro-antd/i18n';
import { registerLocaleData } from '@angular/common';
import zh from '@angular/common/locales/zh';
import { NavBarComponent } from './nav-bar/nav-bar.component';
import { NavButtonComponent } from './nav-bar/nav-button/nav-button.component';
import { NzDropDownModule } from 'ng-zorro-antd/dropdown';
import { NzSpinModule } from 'ng-zorro-antd/spin';
import { NzBadgeModule } from 'ng-zorro-antd/badge';
import { NzAlertModule } from 'ng-zorro-antd/alert';
import { NzFormModule } from 'ng-zorro-antd/form';
import { NzInputModule } from 'ng-zorro-antd/input';
import { NzCheckboxModule } from 'ng-zorro-antd/checkbox';
import { NzButtonModule } from 'ng-zorro-antd/button';
import { NzMessageModule } from 'ng-zorro-antd/message';
import { NzDividerModule } from 'ng-zorro-antd/divider';
import { NzEmptyModule } from 'ng-zorro-antd/empty';
import { NzSkeletonModule } from 'ng-zorro-antd/skeleton';
import { NzTagModule } from 'ng-zorro-antd/tag';
import { NzPaginationModule } from 'ng-zorro-antd/pagination';
import { NzToolTipModule } from 'ng-zorro-antd/tooltip';
import { NzProgressModule } from 'ng-zorro-antd/progress';
import { NzPopoverModule } from 'ng-zorro-antd/popover';
import { NzTableModule } from 'ng-zorro-antd/table';
import { NzModalModule } from 'ng-zorro-antd/modal';
import { NzBackTopModule } from 'ng-zorro-antd/back-top';
import { NzSelectModule } from 'ng-zorro-antd/select';
import { NzIconModule } from 'ng-zorro-antd/icon';
import { NzListModule } from 'ng-zorro-antd/list';
import { SubNavTabComponent } from './shared/sub-nav-tab/sub-nav-tab.component';
import { TabItemDirective } from './shared/sub-nav-tab/tab-item.directive';
import { NgxEchartsModule } from 'ngx-echarts';
import { BarChartComponent } from './charts/bar-chart/bar-chart.component';
import { LineChartComponent } from './charts/line-chart/line-chart.component';
import { PieChartComponent } from './charts/pie-chart/pie-chart.component';
import { RadarChartComponent } from './charts/radar-chart/radar-chart.component';
import { GraphChartComponent } from './charts/graph-chart/graph-chart.component';
import { NzStatisticModule } from 'ng-zorro-antd/statistic';
import { NzUploadModule } from 'ng-zorro-antd/upload';
import { NzCollapseModule } from 'ng-zorro-antd/collapse';
import { NzInputNumberModule } from 'ng-zorro-antd/input-number';
import { NzNotificationModule } from 'ng-zorro-antd/notification';
import { NzAvatarModule } from 'ng-zorro-antd/avatar'

import { NzCardModule } from 'ng-zorro-antd/card';
import { NzCarouselModule } from 'ng-zorro-antd/carousel';
import { BasicLineChartComponent } from './charts/basic-line-chart/basic-line-chart.component';
import { KnowledgeChartComponent } from './charts/knowledge-chart/knowledge-chart.component';

import { NzRadioModule } from 'ng-zorro-antd/radio';
import { LoginFrameComponent } from './login-frame/login-frame.component';
import { NzTimelineModule } from 'ng-zorro-antd/timeline';
import { WordcloudChartComponent } from './charts/wordcloud-chart/wordcloud-chart.component';
import { Pie2ChartComponent } from './charts/pie2-chart/pie2-chart.component';
import { BarCol3ChartComponent } from './charts/bar-col3-chart/bar-col3-chart.component';
import { BarSpecialChartComponent } from './charts/bar-special-chart/bar-special-chart.component';
import { ScatterAqiChartComponent } from './charts/scatter-aqi-chart/scatter-aqi-chart.component';
import { AreaPiecesChartComponent } from './charts/area-pieces-chart/area-pieces-chart.component';
import { EventScatterAqiChartComponent } from './charts/event-scatter-aqi-chart/event-scatter-aqi-chart.component';
import { BankAccountComponent } from './bank-account/bank-account.component';
import { AccountDetailsComponent } from './bank-account/account-details/account-details.component';
import { RecipyPageComponent } from './recipy-page/recipy-page.component';
import { RecipyDetailsComponent } from './recipy-page/recipy-details/recipy-details.component';
import { TransactionLaunchComponent } from './transaction-launch/transaction-launch.component';
import { TransactionDetailsComponent } from './transaction-launch/transaction-details/transaction-details.component';
import { MessageCenterComponent } from './message-center/message-center.component';
import { MessageDetailsComponent } from './message-center/message-details/message-details.component';
registerLocaleData(zh);

const nzSharedModules = [
  NzDropDownModule,
  NzSpinModule,
  NzBadgeModule,
  NzAlertModule,
  NzFormModule,
  NzInputModule,
  NzCheckboxModule,
  NzButtonModule,
  NzMessageModule,
  NzDividerModule,
  NzEmptyModule,
  NzSkeletonModule,
  NzTagModule,
  NzPaginationModule,
  NzToolTipModule,
  NzPopoverModule,
  NzProgressModule,
  NzTableModule,
  NzModalModule,
  NzBackTopModule,
  NzIconModule,
  NzSelectModule,
  NzStatisticModule,
  NzUploadModule,
  NzRadioModule,
  NzCollapseModule,
  NzInputNumberModule,
  NzNotificationModule,
  NzCardModule,
  NzCarouselModule,
  NzTimelineModule,
  NzAvatarModule,
  // NzDescriptionsModule
];

@NgModule({
  declarations: [
    AppComponent,
    NavBarComponent,
    NavButtonComponent,
    SubNavTabComponent,
    TabItemDirective,
    BarChartComponent,
    LineChartComponent,
    PieChartComponent,
    RadarChartComponent,
    BarChartComponent,
    LineChartComponent,
    PieChartComponent,
    RadarChartComponent,
    GraphChartComponent,
    BasicLineChartComponent,
    KnowledgeChartComponent,
    WordcloudChartComponent,
    LoginFrameComponent,
    LoginFrameComponent,
    Pie2ChartComponent,
    BarCol3ChartComponent,
    BarSpecialChartComponent,
    ScatterAqiChartComponent,
    AreaPiecesChartComponent,
    EventScatterAqiChartComponent,
    BankAccountComponent,
    AccountDetailsComponent,
    RecipyPageComponent,
    RecipyDetailsComponent,
    TransactionLaunchComponent,
    TransactionDetailsComponent,
    MessageCenterComponent,
    MessageDetailsComponent,
  ],
  imports: [
    BrowserModule,
    AppRoutingModule,
    FormsModule,
    HttpClientModule,
    BrowserAnimationsModule,
    NgxEchartsModule.forRoot({
      echarts: () => import('echarts')
    }),
    ...nzSharedModules,
    NzListModule
  ],
  providers: [
    { provide: NZ_I18N, useValue: zh_CN },
  ],
  bootstrap: [AppComponent],
  exports: [
    Pie2ChartComponent,
    BarCol3ChartComponent,
    BarSpecialChartComponent,
    ScatterAqiChartComponent,
    AreaPiecesChartComponent,
    AccountDetailsComponent,
    RecipyDetailsComponent,
    TransactionDetailsComponent,
    MessageDetailsComponent,
  ]
})
export class AppModule { }
